#include #include #include // --- MP3 UART PINS --- #define RX_PIN D7 // ESP receives from MP3 TX #define TX_PIN D6 // ESP sends to MP3 RX // --- MP3 SETUP --- HardwareSerial mp3Serial(1); JQ6500_Serial mp3(mp3Serial); // --- DATA STRUCT --- typedef struct struct_message { int track; } struct_message; struct_message msg; // --- ESP-NOW RECEIVE CALLBACK --- void OnDataRecv(const esp_now_recv_info_t *info, const uint8_t *incomingData, int len) { memcpy(&msg, incomingData, sizeof(msg)); Serial.print("Received track: "); Serial.println(msg.track); // Play received track mp3.playFileByIndexNumber(msg.track); } void setup() { Serial.begin(115200); // --- MP3 INITIALIZATION (DO NOT MODIFY) --- mp3Serial.begin(9600, SERIAL_8N1, RX_PIN, TX_PIN); delay(3000); mp3.reset(); delay(1000); mp3.setSource(MP3_SRC_BUILTIN); delay(500); mp3.setVolume(30); delay(500); Serial.println("MP3 Ready"); // --- ESP-NOW SETUP --- WiFi.mode(WIFI_STA); WiFi.disconnect(); if (esp_now_init() != ESP_OK) { Serial.println("ESP-NOW init failed"); return; } esp_now_register_recv_cb(OnDataRecv); Serial.println("Receiver ready"); } void loop() { // nothing required }